﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;

namespace Warehouse_Management
{
    public partial class frmDanhMucDVT : DevExpress.XtraEditors.XtraForm
    {
        public frmDanhMucDVT()
        {
            InitializeComponent();
        }
        private string CurrentMa = string.Empty;
        private string CurrentTen = string.Empty;
        public int status = 0;
        private void frmNhapManager_Load(object sender, EventArgs e)
        {
            loadData();
        }
        private void loadData()
        {
            Global.LoadDVT();
            Global.DVT_dt.PrimaryKey = new DataColumn[] { Global.DVT_dt.Columns["Ma"] };
            Global.DVT_dt.Columns["Ma"].AllowDBNull = false;
            Global.DVT_dt.Columns["Ma"].MaxLength = 5;
            Global.DVT_dt.Columns["Ma"].AllowDBNull = false;
            Global.DVT_dt.Columns["Ma"].MaxLength = 50;
            gridControl1.DataSource = Global.DVT_dt;
            gridControl1.Refresh();
            gridView1.RefreshData();
        }
       
        public void Save()
        {
            try
            {
                DataTable dataChange = new DataTable();
                dataChange = Global.DVT_dt.GetChanges();
                if (dataChange!=null && dataChange.Rows.Count > 0)
                    for (int i = 0; i < dataChange.Rows.Count; i++)
                    {

                        DonViTinh item = new DonViTinh();
                        if (dataChange.Rows[i].RowState == DataRowState.Deleted)
                        {
                            DataRow dr = dataChange.Rows[i];
                            item.Ma = dr["Ma", DataRowVersion.Original].ToString();
                            item.Ten = dr["Ten", DataRowVersion.Original].ToString();
                        }
                        else
                        {
                            item.Ma = dataChange.Rows[i]["Ma"].ToString().Trim();
                            item.Ten = dataChange.Rows[i]["Ten"].ToString().Trim();
                        }
                        
                     
                        switch (dataChange.Rows[i].RowState)
                        {
                            case DataRowState.Added:
                                item.Insert();
                                break;
                            case DataRowState.Deleted:
                                item.Delete();
                                break;
                            case DataRowState.Modified:
                                item.Update();
                                break;
                        }
                    }
                this.Text = "Danh Mục Đơn Vị Tính";
                MessageBox.Show("Lưu thành công");
                loadData();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Lưu không thành công.Lỗi: " + ex.Message);
            }

        }

        private void gridView1_CellValueChanged(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e)
        {
            if (e.Column.ToString() == "Ma")
            {
                if (string.IsNullOrEmpty(e.Value.ToString()))
                {
                    MessageBox.Show("Mã không hợp lệ. Không được để trống mã");
                    gridView1.SetFocusedValue(CurrentMa);
                    return;
                }
                else if (e.Value.ToString().Length > 5)
                {
                    MessageBox.Show("Mã không hợp lệ. Mã đơn vị tính không được quá 5 kí tự");
                    gridView1.SetFocusedValue(CurrentMa);
                    return;
                }
            }
            else if (e.Column.ToString() == "Ten")
            {
                if (string.IsNullOrEmpty(e.Value.ToString()))
                {
                    MessageBox.Show("Tên không hợp lệ. Không được để trống Tên Đơn vị tính");
                    gridView1.SetFocusedValue(CurrentTen);
                    return;
                }
                else if (e.Value.ToString().Length > 50)
                {
                    MessageBox.Show("Mã không hợp lệ. Mã đơn vị tính không được quá 50 kí tự");
                    gridView1.SetFocusedValue(CurrentTen);
                    return;
                }
            }
            this.Text = "Danh Mục Đơn Vị Tính(*)";
        }
        private void gridView1_CustomRowCellEditForEditing(object sender, DevExpress.XtraGrid.Views.Grid.CustomRowCellEditEventArgs e)
        {
            if (e.CellValue != null)
            {
                if (e.Column.ToString() == "Ma")
                    CurrentMa = e.CellValue.ToString();
                else if (e.Column.ToString() == "Ten")
                    CurrentTen = e.CellValue.ToString();
            }
        }
        public void delete()
        {
             DataRow dr = Global.DVT_dt.NewRow();
             Global.DVT_dt.Rows[this.gridView1.GetDataSourceRowIndex(gridView1.GetSelectedRows()[0])].Delete();
             this.Text = "Danh Mục Đơn Vị Tính(*)";
             gridControl1.Refresh();
             gridView1.RefreshData();
            //Global.DVT_dt.Rows.Remove(dr);
        }

        private void frmDanhMucDVT_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (this.Text.Contains("(*)"))
                if (MessageBox.Show("Bạn có muốn lưu thông tin trước khi đóng ? ", "Thông báo", MessageBoxButtons.YesNo) == DialogResult.Yes)
                    this.Save();
        }
        

        
    }
}